
/*
Funzioni generali
*/

//Rimuove un elemento da un array
function removeByElement(arrayName,arrayElement){
    for(var i=0; i<arrayName.length;i++ )
        { 
          if(arrayName[i]==arrayElement) {
               arrayName.splice(i,1); 
          }
        } 
}

//Controlla se un elemento è presente in un array
function controllaArray(arrayName,arrayElement) {
    for (var i=0; i< arrayName.length;i++) {
        if (arrayName[i] == arrayElement) {
            return true
        }
    }
    return false
}

//Controlla se tutti gli elementi dell'array hanno valore True
function checkArrayForTrue(my_array) {
    if (my_array.length == 1 || my_array.length == 0) {
        return true;
    }
    for (i=0;i<my_array.length;i++){
        if (i > 0 && my_array[i] != my_array[i-1]) {
            return false;
        }
    }
        return true;
}

function updateComboComune(valore) {
    var comuniTemp = [];
    //Aggiornamento griglia
    if (valore == 'Qualsiasi') {
        //mostra tutti gli elementi della griglia
        grid.store.clearFilter();
        //Resetta le altre select
        comboComune.setValue('Qualsiasi');
        comboComune.disable();
        comboFiume.setValue('Qualsiasi');
        comboFiume.disable();
        //Mostra tutte le features
        filtroCombinato.filters = [];
    } else {
        //Filtro la griglia in base alla vulnerabilita
        grid.store.filter('Vulnerabilita',valore);
        comboComune.store.clearFilter();
        comboComune.store.filterBy(function(record) {
                    if ((record.get('Vulnerabilita') == valore) || (record.get('Vulnerabilita') == 'Qualsiasi')) {
                        if (controllaArray(comuniTemp,record.data.Comune)) {
                            return false
                        } else {
                            console.log(record.data.Comune);
                            comuniTemp.push(record.data.Comune);
                            return true
                        }
		    } else {
                        return false
		    }
        });
    //Filtro le features in base alla vulnerabilita
    filtroVulnerabilita.value = valore;
    filtroCombinato.filters.push(filtroVulnerabilita);
    }
    filterStrategy.setFilter(filtroCombinato);
}

function updateComboFiume(valore) {
    var fiumiTemp = [];
    //Aggiornamento griglia
    if (valore == 'Qualsiasi') {
        //mostra tutti gli elementi della griglia
        //grid.store.clearFilter();
        comboFiume.setValue('Qualsiasi');
        comboFiume.disable();
        grid.store.filter('Vulnerabilita',comboVulnerabilita.value);
        filtroCombinato.filters = [];
        filtroCombinato.filters.push(filtroVulnerabilita)
    } else {
        //Filtro la griglia in base alla vulnerabilita
        //grid.store.filter('Comune',valore);
        grid.store.filterBy(function(record, id) {
              return (record.get('Vulnerabilita') == comboVulnerabilita.value) && (record.get('Comune') == valore);
        });
        comboFiume.store.clearFilter();
        comboFiume.store.filterBy(function(record) {
                    if ((record.get('Comune') == valore) || (record.get('Comune') == 'Qualsiasi')) {
                        if (controllaArray(fiumiTemp,record.data.Fiume)) {
                            return false
                        } else {
                            console.log(record.data.Fiume);
                            fiumiTemp.push(record.data.Fiume);
                            return true
                        }
		    } else {
                        return false
		    }
        });
    filtroComune.value = valore;
    filtroCombinato.filters.push(filtroComune);
    }
    filterStrategy.setFilter(filtroCombinato);
}
function updateCombo(campo,valore) {
    var elencoCombo = ['comboFiume','comboComune'];
    var filtro = eval('filtro'+campo);
    for (var i=0; i<elencoCombo.length; i++) {
	var comboSelezionata = 'combo'+campo;
        if (comboSelezionata != elencoCombo[i]) {
	    var combo = eval(elencoCombo[i]); 
            if (valore == 'Qualsiasi') {
                removeByElement(filtroCombinato.filters,filtro);
                combo.store.clearFilter();
		if (checkArrayForTrue) {
		    grid.store.clearFilter();
                }
            } else { 
                grid.store.filter(campo,valore);
		filtro.value = valore;
		if (!(controllaArray(filtroCombinato.filters,filtro))) {
            	    filtroCombinato.filters.push(filtro);
                    //console.log(filtroCombinato.filters);
                }
		console.log(combo.store.length);
                combo.store.filterBy(function(record) {
                    console.log(valore);
                    if ((record.get(campo) == valore) || (record.get(campo) == 'Qualsiasi')) {
                        return true
		    } else {
                        return false
		    }
                });
                console.log(combo);
            }  
        }
    }
/*
    if (valore == 'Qualsiasi') {
        //Tolgo il filtro dalla mappa
        removeByElement(filtroCombinato.filters,filtro);
	//Resetto la griglia
        grid.store.clearFilter();
    } else {
        filtro.value = valore;
        grid.store.filter(campo,valore);
        if (!(controllaArray(filtroCombinato.filters,filtro))) {
            filtroCombinato.filters.push(filtro);
        }
    }
*/
    filterStrategy.setFilter(filtroCombinato);
 
}

function zoomToSelection(catastale) {
    var i,
        feature,
        len = vector.features.length,
        featureTrovata;
    for (i=0;i<len;i++) {
        feature = vector.features[i];
        if (feature.attributes.catastale == catastale) {
            featureTrovata = feature;
        }
    }
    console.log(featureTrovata);
    map.setCenter(new OpenLayers.LonLat(featureTrovata.geometry.x,featureTrovata.geometry.y),15);
}
